Factory and Interfaces

TODO.